﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Interfaces;
using Model;
using ControllerLag;

namespace Projekt_1
{
    public partial class FrmHomeparty : Form
    {
        //private IHomeparty ihomeparty;
        private Controller controller;
        private Homeparty homeparty;
        List<Kunde> gæsteliste = new List<Kunde>();
        Kunde værtindeholder;
        Landsdel l;
        public FrmHomeparty(Controller controller)
        {
            InitializeComponent();
			this.controller = controller;
            cboRegion.SelectedItem = cboRegion.Items[0];
            OpbygTid();
            dtpTid.SelectedText = "18:00";
        }

        private void btnSøgKunde_Click(object sender, EventArgs e)
        { 
            
            //long tlf;
            //Kunde kunde;
            //int kundeNr, postNr;
            //string søgefelt = txtSøgKunde.Text;            
            //if (søgefelt.Length > 4 && søgefelt.Length <= 7 && int.TryParse(søgefelt, out kundeNr))
            //{
            //    kunde = controller.FindKunde(kundeNr);
            //}
            //if (søgefelt.Length == 4 && int.TryParse(søgefelt, out postNr))
            //{
            //    IEnumerator kunder = controller.FindKundePost(postNr);
            //    while (kunder.MoveNext())
            //    {
            //        Kunde k = (Kunde)kunder.Current;
            //        ListViewItem l = new ListViewItem();
            //        l.Text = k.Navn;
            //        l.SubItems.Add(k.TlfNr.ToString());
            //        l.SubItems.Add(k.PostNr.ToString());
            //        l.SubItems.Add(k.KundeNr.ToString());
            //        lstKunde.Items.Add(l);
            //    }
            //}
            //else if (søgefelt.Length == 8 && long.TryParse(søgefelt, out tlf))
            //{
            //    kunde = controller.FindKundeTlf(tlf);
            //}
            //else if (søgefelt.Contains("@"))
            //{
            //    kunde = controller.FindKundeMail(søgefelt);
            //}
            //else
            //{
            //    IEnumerator kunder = controller.FindKundeNavn(søgefelt);

            //    kunder.Reset();

            //    while (kunder.MoveNext())
            //    {
            //        var k = (IKunde) kunder.Current;
            //        //Kunde k = (Kunde) kunder.Current;

            //        ListViewItem l = new ListViewItem();
            //        l.Name = k.Navn;
            //        l.Text = k.Navn;
            //        l.SubItems.Add(k.TlfNr.ToString());
            //        l.SubItems.Add(k.PostNr.ToString());
            //        l.SubItems.Add(k.KundeNr.ToString());
            //        l.SubItems.Add(k.Mail);
            //        lstKunde.Items.Add(l);
            //    }
            //}
            //OpbygTid();
            //dtpTid.SelectedItem = "8:00";               
        }

        private void OpbygTid()
        {
            TimeSpan start = new TimeSpan(0, 0, 0);
            TimeSpan slut = new TimeSpan(24, 0, 0);
            TimeSpan interval = new TimeSpan(0, 30, 0);

            TimeSpan t = start;
            while (t < slut)
            {
                t = t + interval;
                if (t.Hours < 10)
                {
                    if (t.Minutes == 0)
                    {
                        dtpTid.Items.Add("0" + t.Hours + ":" + t.Minutes + "0");
                    }
                    else
                    {
                        dtpTid.Items.Add("0" + t.Hours + ":" + t.Minutes);
                    }
                }
                else
                {
                    if (t.Minutes == 0)
                    {
                        dtpTid.Items.Add(t.Hours + ":" + t.Minutes + "0");
                    }
                    else
                    {
                        dtpTid.Items.Add(t.Hours + ":" + t.Minutes);
                    }
                }
            }
            lstKunde.Items.Clear();
        }

        private void btnGem_Click(object sender, EventArgs e)
        {
            controller.TilføjHomeparty(1, værtindeholder, dtpDato.Value, l, 
                controller.FindSælger(int.Parse(txtSælgerID.Text)), gæsteliste);

            #region Region
            if (cboRegion.SelectedText == "Nordjylland")
            {
                l = Landsdel.NORDJYLLAND;
            }
            else if (cboRegion.SelectedText == "Midtjylland")
            {
                l = Landsdel.MIDTJYLLAND;
            }
            else if (cboRegion.SelectedText == "Syddanmark")
            {
                l = Landsdel.SYDDANMARK;
            }
            else if (cboRegion.SelectedText == "Sjælland")
            {
                l = Landsdel.SJÆLLAND;
            }
            else if (cboRegion.SelectedText == "Hovedstaden")
            {
                l = Landsdel.HOVEDSTADEN;
            }
            else
            {
                MessageBox.Show("Du må ikke indtaste i Regionsfeltet", "Fejl", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                cboRegion.Focus();
                return;
            }

            #endregion


            // Test-parametre...
            //Landsdel l=Landsdel.HOVEDSTADEN;
            //Sælger sælger=null;
            //DateTime dato=DateTime.Now;
            //Kunde kunde;
            //int sælgerId;

            //if (!int.TryParse(txtSælgerID.Text, out sælgerId))
            //{
            //    MessageBox.Show("Der er ikke valgt et gyldigt Sælger ID", "Fejl", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //    txtSælgerID.Focus();
            //    return;
            //}
            //sælger = controller.FindSælger(sælgerId);

            

            //try
            //{
            //    dato = new DateTime(dtpDato.Value.Year, dtpDato.Value.Month, dtpDato.Value.Day, int.Parse(dtpTid.Text.Split(':')[0]), int.Parse(dtpTid.Text.Split(':')[1]), 0);
            //}
            //catch (Exception)
            //{
            //    MessageBox.Show("Der er ikke valgt et gyldigt starttidspunkt", "Fejl", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //    dtpDato.Focus();
            //    return;
            //}
            //int kundeNr = int.Parse(lstKunde.SelectedItems[0].SubItems[2].Text);
            //kunde = controller.FindKunde(kundeNr);
            //homeparty =controller.TilføjHomeparty(kunde, dato, l, sælger);

            lstKunde.Enabled = false;
            txtSøgKunde.Enabled = false;
            btnSøgGæst.Enabled = false;
            btnSøgKunde.Enabled = false;
            btnTilføjGæst.Enabled = false;
            btnFærdig.Enabled = false;
            btnNytHomeparty.Enabled = true;            
            btnFindgæst.Enabled = false;
            btnNygæst.Enabled = false;
            btnGem.Enabled = false;
            btnLuk.Enabled = true;
            txtSælgerID.Enabled = false;
            lstGæsteliste.Enabled = false;
            dtpDato.Enabled = false;
            dtpTid.Enabled = false;
            cboRegion.Enabled = false;           
            
        }

        private void btnLuk_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnSøgGæst_Click(object sender, EventArgs e)
        {
            long tlf;
            Kunde kunde;
            int kundeNr, postNr;
            string søgefelt = txtSøgKunde.Text;

            if (søgefelt.Length > 4 && søgefelt.Length <= 7 && int.TryParse(søgefelt, out kundeNr))
            {
                kunde = controller.FindKunde(kundeNr);
            }
            if (søgefelt.Length == 4 && int.TryParse(søgefelt, out postNr))
            {
                IEnumerator kunder = controller.FindKundePost(postNr);
                while (kunder.MoveNext())
                {
                    Kunde k = (Kunde)kunder.Current;
                    ListViewItem l = new ListViewItem();
                    l.Text = k.Navn;
                    l.SubItems.Add(k.TlfNr.ToString());
                    l.SubItems.Add(k.PostNr.ToString());
                    l.SubItems.Add(k.KundeNr.ToString());
                    lstKunde.Items.Add(l);
                }
            }
            else if (søgefelt.Length == 8 && long.TryParse(søgefelt, out tlf))
            {
                kunde = controller.FindKundeTlf(tlf);
            }
            else if (søgefelt.Contains("@"))
            {
                kunde = controller.FindKundeMail(søgefelt);
            }
            else
            {
                IEnumerator kunder = controller.FindKundeNavn(søgefelt); // Finder et match.

                kunder.Reset(); // Nulstiller efter fundet match.

                while (kunder.MoveNext()) // Kører listen af kunder igennem.
                {
                    var k = (IKunde)kunder.Current; // Tager nuværende kunde.

                    ListViewItem l = new ListViewItem();
                    l.Name = k.Navn;
                    l.Text = k.Navn;
                    l.SubItems.Add(k.TlfNr.ToString());
                    l.SubItems.Add(k.PostNr.ToString());
                    l.SubItems.Add(k.KundeNr.ToString());
                    l.SubItems.Add(k.Mail);
                    lstKunde.Items.Add(l); // Ligger kunden over i listview...
                }
            }
        }

        private void btnNygæst_Click(object sender, EventArgs e)
        {
            FrmKunde form = new FrmKunde(controller);
            form.ShowDialog();
        }

        private void btnTilføjGæst_Click(object sender, EventArgs e)
        {
            int selectedIndex;

            if (int.TryParse(lstKunde.Columns[3].Text, out selectedIndex))
            {
                gæsteliste.Add(controller.FindKunde(selectedIndex));

                UpdateGUI();
                //foreach ( hp in controller.HentHomepartyListe())
                //{
                //    for (int i = 0; i < hp.Gæsteliste.Count; i++)
                //    {
                //        ListViewItem lst = new ListViewItem();
                //        lst.Text = hp.Gæsteliste[i].KundeNr.ToString();
                //        lst.SubItems.Add(hp.Gæsteliste[i].Navn);
                //        lstGæsteliste.Items.Add(lst);
                //    }
                //}
            }
        }

        private void UpdateGUI()
        {
            foreach (Kunde kunde in gæsteliste)
            {
                for (int i = 0; i < gæsteliste.Count; i++)
                {
                    ListViewItem lst = new ListViewItem();
                    lst.Text = gæsteliste[i].Navn;
                    lst.SubItems.Add(gæsteliste[i].KundeNr.ToString());                
                }
            }
        }
        
        
        #region EnableCheck
        private void FrmHomeparty_Load(object sender, EventArgs e)
        {
            lstKunde.Enabled = false;
            txtSøgKunde.Enabled = false;
            btnSøgGæst.Enabled = false;
            btnSøgKunde.Enabled = false;
            btnTilføjGæst.Enabled = false;
            btnFærdig.Enabled = false;
            btnNytHomeparty.Enabled = true;            
            btnFindgæst.Enabled = false;
            btnNygæst.Enabled = false;
            btnGem.Enabled = false;
            btnLuk.Enabled = true;
            txtSælgerID.Enabled = false;
            lstGæsteliste.Enabled = false;
            dtpDato.Enabled = false;
            dtpTid.Enabled = false;
            cboRegion.Enabled = false;
        }

        private void btnFærdig_Click(object sender, EventArgs e)
        {
            lstKunde.Enabled = false;
            txtSøgKunde.Enabled = false;
            btnSøgGæst.Enabled = false;
            btnSøgKunde.Enabled = false;
            btnTilføjGæst.Enabled = false;
            btnFærdig.Enabled = false;
            btnNytHomeparty.Enabled = false;            
            btnFindgæst.Enabled = true;
            btnNygæst.Enabled = false;
            btnGem.Enabled = true;
            btnLuk.Enabled = true;
            txtSælgerID.Enabled = true;
            lstGæsteliste.Enabled = true;
            dtpDato.Enabled = true;
            dtpTid.Enabled = true;
            cboRegion.Enabled = true;     
        }

        private void btnFindgæst_Click(object sender, EventArgs e)
        {
            lstKunde.Enabled = true;
            txtSøgKunde.Enabled = true;
            btnSøgGæst.Enabled = true;
            btnSøgKunde.Enabled = true;
            btnTilføjGæst.Enabled = true;
            btnFærdig.Enabled = true;
            btnNytHomeparty.Enabled = false;            
            btnFindgæst.Enabled = false;
            btnNygæst.Enabled = true;
            btnGem.Enabled = false;
            btnLuk.Enabled = false;
            txtSælgerID.Enabled = false;
            lstGæsteliste.Enabled = false;
            dtpDato.Enabled = false;
            dtpTid.Enabled = false;
            cboRegion.Enabled = false;
        }

         private void btnNytHomeparty_Click(object sender, EventArgs e)
        {
            lstKunde.Enabled = false;
            txtSøgKunde.Enabled = false;
            btnSøgGæst.Enabled = false;
            btnSøgKunde.Enabled = false;
            btnTilføjGæst.Enabled = false;
            btnFærdig.Enabled = false;
            btnNytHomeparty.Enabled = false;            
            btnFindgæst.Enabled = true;
            btnNygæst.Enabled = false;
            btnGem.Enabled = true;
            btnLuk.Enabled = true;
            txtSælgerID.Enabled = true;
            lstGæsteliste.Enabled = true;
            dtpDato.Enabled = true;
            dtpTid.Enabled = true;
            cboRegion.Enabled = true;

        }    
        #endregion

         private void btnAngivVærtinde_Click(object sender, EventArgs e)
         {
             int selectedIndex;

             if (int.TryParse(lstGæsteliste.SelectedItems[1].Text, out selectedIndex))
             {
                 værtindeholder = controller.FindKunde(selectedIndex);
             }
         }

         
    }
}
